﻿<!DOCTYPE html>
<html lang="zh-cn">

	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="renderer" content="webkit">
		<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
		<title>报表中心</title>
		<link rel="stylesheet" type="text/css" href="component/weui.1.1.3/weui.css" />
		<link rel="stylesheet" type="text/css" href="component/layui/css/layui.css" />
		<link rel="stylesheet" type="text/css" href="component/layer-mobile-v2.0/need/layer.css" />
		<link rel="stylesheet" type="text/css" href="css/CommonPage.css?v=3" />

		<script type="text/javascript" src="./js/jquery-2.2.4.min.js"></script>
		<script src="../assets/js/m.js"></script>
		<script src="component/weui.js.1.1.4/weui_modified.js?v=2" type="text/javascript" charset="utf-8"></script>
		<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

		<!--<script src="//cdn.bootcss.com/eruda/1.4.2/eruda.min.js"></script>-->
		<script>
//			eruda.init();
		</script>
		<style>
			.titlebar {
				/*background: #5475ab;*/
				background: #404856;
				display: block;
				height: 40px;
				width: 100%;
			}
			
			.titlebar .title {
				color: #fff;
				display: inline-block;
				font-size: 16px;
				height: 40px;
				line-height: 40px;
				padding-left: 10px;
				vertical-align: top;
				width: calc(100% - 65px - 20px);
			}
			
			.titlebar .btn-search {
				display: inline-block;
				line-height: 40px;
				vertical-align: top;
			}
			
			.titlebar .btn-search img {
				background-color: #404856 !important;
				border-radius: 3px;
				color: #1db497;
				height: 15px;
				width: 15px;
				line-height: 15px;
				margin-top: -1px;
				z-index: 1000;
				display: inline-block;
				margin-left: -4px;
			}
			
			.titlebar .btn-search label {
				display: inline-block;
				color: #FFFFFF;
				font-size: 14px;
			}
		</style>
		<script>
			//  var UA = navigator.userAgent;
			//  var forIOS = function(){
			//      if(!UA.match(/iPad/) && !UA.match(/iPhone/) && !UA.match(/iPod/)){return;}
			//      if($('#wrapper').length){return;}
			//      $('body').children().not('script').wrapAll('<div id="wrapper"></div>');
			//  }();
		</script>
	</head>

	<body ontouchstart>
		<div class="main">
			<div class="titlebar">
				<div class="title">
					报表标题
				</div>
				<div class="btn-search" style="cursor: pointer;">
					<label>筛选</label>
					<img style="cursor :pointer;" src="img/icon/filter.png" />
				</div>
			</div>
			<div class="condition">
				<!-- 添加行的模板 line 和 oneLinePart 两个div最好留着，以便布局统一，
                    label也是leftTipLabel做了样式，为了布局统一（但是非强制性） -->
				<!--
                <div class="line">
                    <div class="oneLinePart">
                        <label for="txtShop" class="leftTipLabel">时间:</label>
                        <input id="txtShop" readonly="readonly" onfocus="this.blur();" value="" class="oneline-input common-input" />
                        <img class="input-icon oneline-input-icon" src="img/icon/calendar.png" />
                    </div>
                </div>
                -->
			</div>
			<div class="pop-mask"></div>
			<div class="iframe">
				<iframe name="myIframe" id="myIframe" scrolling="auto"></iframe>
			</div>
		</div>

		<script src="js/fastclick.js" type="text/javascript" charset="utf-8"></script>
		<script src="js/CommonPage.js" type="text/javascript" charset="utf-8"></script>
		<script src="component/layui/layui.js" type="text/javascript" charset="utf-8"></script>
		<script src="component/layer-mobile-v2.0/layer-modified.js" type="text/javascript" charset="utf-8"></script>

		<script>
			$(function() {
				FastClick.attach(document.body);
			});
		</script>
		<script>
			var loading = null;
			//级联关系记录
			var cascadeList = [];
			//下拉框数据源
			var dataSourceList = [];
			//参数集合，用于遍历参数，以便传参
			var paramList = [];

			//用id获取级联数据
			var getCascadeDataById = function(id) {
				for(var i = 0; i < cascadeList.length; i++) {
					var item = cascadeList[i];
					if(item.targetId === id) {
						return item;
					}
				}
				return null;
			}

			//用source获取级联数据
			var getCascadeDataBySource = function(source, isSearch) {
				//查找模式慎用，很多API开头都一样的
				for(var i = 0; i < cascadeList.length; i++) {
					var item = cascadeList[i];
					if(isSearch) {
						if(item.source.indexOf(source) > -1) {
							return item;
						}
					} else {
						if(item.source === source) {
							return item;
						}
					}

				}
				return null;
			}

			//用id设置数据源（主要是下拉框的数据源，字段的数据可以放在自定义属性，数组的只能另存了）
			var setDataSourceListById = function(id, data) {
				if(dataSourceList.length === 0) {
					dataSourceList.push({ key: id, value: data });
					return false;
				}

				//不然就遍历数据源，已经有就修改，没有就增加
				var len = dataSourceList.length;
				for(var i = 0; i < len; i++) {
					var item = dataSourceList[i];
					if(item.key === id) {
						item.value = data;
						break;
					} else {
						dataSourceList.push({ key: id, value: data });
						break;
					}
				}
			}

			//用id获取数据源
			var getDataSourceListById = function(id) {
				for(var i = 0; i < dataSourceList.length; i++) {
					var item = dataSourceList[i];
					if(item.key === id) {
						return item.value;
					}
				}
				return [];
			}
			
			var getDatasItemByName=function(name,data){
				for(var i = 0; i < data.length; i++) {
					var item = data[i];
					if(item.Name === name) {
						return item;
					}
				}
				return null;
			};

			//清空数据源(在页面打开的时候，有些数据源没有带筛选条件，成功级联一次之后，这些初始化数据就用不上了)
			var cleanDataSourceListById = function(id) {
				for(var i = 0; i < dataSourceList.length; i++) {
					var item = dataSourceList[i];
					if(item.key === id) {
						item.value = [];
					}
				}
			}

			//转API数据源格式到picker数据源格式
			var parseDataSource = function(datas) {
				var pickerData = [];
				for(var i = 0; i < datas.length; i++) {
					pickerData.push({ label: datas[i].Name, value: datas[i].ID });
				}
				return pickerData;
			};

			//递归清空级联下家
			var cleanInputByTopId = function(topId) {
				//console.log("递归清空级联下家");
				var target = getCascadeDataById(topId);
				if(target != null) {
					$('#' + target.id).val("");
					$('#' + target.id).attr("data-value", "");
					cleanInputByTopId(target.id);
				} else {
					//console.log("cleanInputByTopId 递归完毕");
				}
			};

			var killDocumentDelegate = function(id) {
				//console.log('解除' + id + '的document委托')
				var input = $('#' + id);
				//console.log('killDocumentDelegate input ', input);
				var inputClass = $(input).prop('class');
				var newInputClass = inputClass.replace("input_dropdown", "input_none_dropdown");
				$(input).prop('class', newInputClass);
				//console.log('killDocumentDelegate input ', input);

				var img = $(input).parent().find('.input-icon');
				//console.log('killDocumentDelegate img ', img);
				var imgClass = $(img).prop('class');
				var newimgClass = imgClass.replace("input-icon_dropdown", "input-icon_none_dropdown");
				$(img).prop('class', newimgClass);
				//console.log('killDocumentDelegate img ', img);
			};

			//显示或者隐藏查询条件
			var showCondition = function(isShow) {
				if(isShow) {
					$('.condition').show();
					$('.pop-mask').show();
				} else {
					$('.condition').hide();
					$('.pop-mask').hide();
				}
			};

			var hideLoading=function(){
				if(loading==null){
					console.log('当前没有loading');
				}else{
					console.log('当前有loading');
					loading.hide(function() {
						//console.log("正常级联请求--隐藏");
					});
				}
			};

			//ready
			$(function() {
				
				loading = weui.loading('正在查询数据...', {
					className: 'custom-classname'
				});
						
						
				layui.use('form', function() {
					var form = layui.form; //只有执行了这一步，部分表单元素才会自动修饰成功

					//初始化m.js
					new window.Kmer({ "AppRootPath": "", "CurrentUrl": "" });

					var realUrl = getUrlParam("realUrl"); //下面几个参数都很重要，一个都不能少
					var reportId = getParam(realUrl, "Id");
					var config = getParam(realUrl, "Config");
					var userId = getParam(realUrl, "UserID");
					var title = getParam(realUrl, "Title");

					if(realUrl === "" || reportId === "" || config === "" || userId === "" || title === "") {
						console.log("当前重要参数不全，详见下面：");
						console.log("realUrl=" + realUrl);
						console.log("reportId=" + reportId);
						console.log("config=" + config);
						console.log("userId=" + userId);
						layerAlertAndCallback("参数丢失,请重新进入", function() {
							history.go(-1);
							return false;
						});
						return false;
					}
					//做一些初始化
					$('.titlebar .title').text(title);

					//注入配置
					Y.API2("WXBase", "GetConfig", { "url": window.location.href, "wxConfig": config }, function(data) {
						if(data.Success == false) {
							console.log("WXBase GetConfig失败", data.Message);
						} else {
							wx.config({
								//beta: true,// 必须这么写，否则wx.invoke调用形式的jsapi会有问题
								debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
								appId: data.corpId, // 必填，企业微信的corpID
								timestamp: data.timeStamp, // 必填，生成签名的时间戳
								nonceStr: data.nonceStr, // 必填，生成签名的随机串
								signature: data.signature, // 必填，签名，见附录1
								jsApiList: [
									"onMenuShareWechat", "onMenuShareAppMessage", "hideOptionMenu", "startWifi", "getConnectedWifi"
								]
								// 必填，需要使用的JS接口列表，所有JS接口列表见附录2
							});
						}
					});

					//准备微信相关
					wx.ready(function() {
						// config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
						//分享给朋友接口

						/* begin禁用微信分享功能 */
						function onBridgeReady() {
							WeixinJSBridge.call('hideOptionMenu');
						}

						if(typeof WeixinJSBridge == "undefined") {
							if(document.addEventListener) {
								document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
							} else if(document.attachEvent) {
								document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
								document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
							}
						} else {
							onBridgeReady();
						}
						/* end禁用微信分享功能 */

					});

					//自己定义一个特殊的点击事件
					var setMyClick = function(id, res) {
						//console.log("[" + id + "]先解除旧的，然后添加新点击事件");
						$('#' + id).off("click");
						$('#' + id).on('click', function(event) {
							//console.log("点击事件来源：", event.target);
							event.stopPropagation();
							createPicker(id, res);
						});
					};

					//特殊级联参数，因为是递归的，多层拼凑参数只能在最外层var
					var cascadePostData = {};
					var createPicker = function(id, originalData) {
						//console.log("创建Picker一次");
						//console.log("当前的id="+id);
						var input = $('#' + id).parent().find('.common-input');
						var id = $(input).attr('data-id');
						//console.log("兼容新id="+id);
						
						//api数据源跟picker的数据源格式不一样，要转一下
						var pickerData = parseDataSource(originalData);
						//没有数据就加个友好提示
						var noData=false;
						var deValue = null;
						if(pickerData.length === 0) {
							pickerData.push({ label: '-- 无数据 --', value: '' });
							noData=true;
						}
						//看看有默认值不
						var defaultvalue = $(input).attr("data-defaultvalue")||'';
						if(defaultvalue!=''){
							//看看默认值在数据源里面存在不
							var tmpData=getDatasItemByName(defaultvalue,originalData);
							if(tmpData!=null){
								deValue = [tmpData.ID];
							}
						}
						//console.log("最终的默认值deValue",deValue);
						//创建自己修改的picker（加了onClean）						
						weui.picker2(pickerData, {
							id: id,
							className: 'custom-classname',
							defaultValue: deValue,
							onClean: function(result) {
								$(input).val(""); //显示给前台
								$(input).attr('value','');
								$(input).attr("data-value", ""); //实际要用的参数值
								$(input).attr("data-defaultvalue", '');
							},
							onChange: function(result) {
								//console.log("滚动到："+JSON.stringify(result));
							},
							onConfirm: function(result) {
								//console.log("选择了",JSON.stringify(result));
								$(input).attr("data-defaultvalue", "");//默认值仅在第一次打开有效，一旦选择了，就永久清空
								//无数据的处理分支
								if(result[0].value === "") {
									//console.log('-- 无数据 --');
									$(input).val(""); //显示给前台
									$(input).attr('value','');
									$(input).attr("data-value", ""); //实际要用的参数值
									return false;
								}
								//console.log("当前标签类型:"+$(input).prop('tagName')+",个数："+$(input).length+"个");
								//console.log('选择前input的值：'+ $(input).val());
								//有数据就绑定
								$(input).val(result[0].label); //显示给前台
								//console.log('选择后的Input值：'+$(input).val());
								$(input).attr("data-value", result[0].value); //实际要用的参数值
								//是否要级联
								var cascadeTarget = getCascadeDataById(id);
								if(cascadeTarget == null) {
									//console.log("当前控件是：" + id + ",不需要级联");
									return false;
								}

								//console.log("当前控件是：" + id + ",需要级联");
								//先清空下级
								cleanInputByTopId(id);
								//硬编码写死在省份获取城市的时候，记录省份id，在获取店铺的时候还要加上UserId
								if(cascadeTarget.source === "GetCity") {
									cascadePostData.ProvinceID = result[0].value;
								} else if(cascadeTarget.source.indexOf('GetShopListBy') > -1) {
									cascadePostData.CityID = result[0].value;
									cascadePostData.UserID = userId;
								}
								//通用请求参数
								var postData = { ID: result[0].value };
								//特殊请求就用特殊参数
								if(cascadeTarget.source.indexOf("GetShopListBy") > -1) {
									postData = cascadePostData;
								}
								//避免请求数据没有回来的时候，用户乱点
								loading = weui.loading('正在查询数据...', {
									className: 'custom-classname'
								});

								//console.log("postData", postData);
								//setTimeout(function() {console.log("延迟请求");}, 0);
								//先解除全局委托，反正下面即将有专门的事件给它
								killDocumentDelegate(cascadeTarget.id);
								//开始请求级联数据
								Y.API2("WxDataSource", cascadeTarget.source, postData, function(res) {
									//console.log("请求级联数据源成功：", res);
									setMyClick(cascadeTarget.id, res);
									setMyClick('input-icon_' + cascadeTarget.id, res);

									//如果是在选择省份，级联城市，就额外请求一次店铺，再隐藏loading,否则立马隐藏
									if(cascadeTarget.source === "GetCity") {
										//console.log("当前是GetCity，开始额外获取店铺");
										//参数只要省份，不要城市。参数来源：当前选中值
										var provinceId = result[0].value;
										//店铺ID来自于请求店铺的级联
										var temp = getCascadeDataBySource('GetShopListBy', true);
										var tmpPostData = { ProvinceID: provinceId, UserID: userId };
										if(temp != null) {
											var tempId = temp.id;
											//先解除全局委托，反正下面即将有专门的事件给它
											killDocumentDelegate(tempId);
											//开始请求店铺
											Y.API2("WxDataSource", temp.source, tmpPostData, function(r) {
												//console.log("额外请求店铺数据源成功：", r);
												setMyClick(tempId, r);
												setMyClick('input-icon_' + tempId, r);
												//一切都完毕才隐藏loading
												loading.hide(function() {
													//console.log("额外请求店铺数据源成功--隐藏");
												});
											});
										}
									} else {
										//正常时候，拿到数据就直接关闭loading
										loading.hide(function() {
											//console.log("正常级联请求--隐藏");
										});
									}
								}); //Y.API2
							} //onConfirm
						}); //weui.picker2
					};

					//时间类型的通用Picker
					$(document).on('click', '.input_time,.input-icon_time', function() {
						//无论是点击图标还是input，最终的数据判定都在input的data-value上
						var input = $(this).parent().find('.common-input');
						var id = $(input).attr('data-id');
						//日期类型的picker
						weui.datePicker({
							id: $(input).attr('data-id'),
							start: getYear(), //默认2015
							end: getYear(10), //默认往后10年
							defaultValue: getCurrentDateArr(0), //默认今天
							onConfirm: function(result) {
								//console.log(result);
								var val = formatDate(result);
								$(input).val(val); //显示给前台
								$(input).attr("data-value", val); //实际要用的参数值
							}
						});
					});

					//下拉框类型的通用Picker
					$(document).on('click', '.input_dropdown,.input-icon_dropdown', function(event) {
						//console.log("！！！！！！！！！！！！！下拉框类型全局委托被触发！！！！！！！！！！！！");
						//console.log("点击事件来源：", event.target);

						//无论是点击图标还是input，最终的数据判定都在input的data-value上
						var input = $(this).parent().find('.common-input');
						var id = $(input).attr('data-id');
						var pickerData = getDataSourceListById(id); //下拉框要下拉数据源
						//创建picker
						//console.log("创建通用picker");
						//console.log("兼容新id="+id);
						createPicker(id, pickerData);
					});

					//过滤按钮事件，主要就是切换条件栏的显示
					$(document).on('click', '.btn-search', function() {
						if($('.condition').css('display') === 'none') {
							showCondition(true);
						} else {
							showCondition(false);
						}
					});

					//确定查询按钮事件
					$(document).on('click', '.btn-submit button', function() {
						var urlParam = "&";
						//遍历、拼凑参数
						for(var i = 0; i < paramList.length; i++) {
							var param = paramList[i];
							var value = '';
							if(param.type == 'text') {
								//文本类型直接取val
								value = $('#' + param.id).val();
							} else if(param.type == 'radio') {
								//单选框类型防止有逗比没配置好数据源，防一手undefined
								value = $('input[name="' + param.id + '"]:checked').val() || '';
							} else if(param.type == 'checkbox') {
								//复选框类型要注意可能一个都不选
								var boxs = $('input[name="' + param.id + '"]:checked');
								for(let i = 0; i < boxs.length; i++) {
									value += $(boxs[i]).val() + ',';
								}
								value = value.trimAll(',');
							} else {
								//剩下的都是下拉，取专属的input的 data-value
								value = $('#' + param.id).attr("data-value") || '';
							}
							urlParam += param.name + '=' + value + '&';
						}

						urlParam = urlParam.trimAll('&');
						var newUrl = realUrl + "&" + urlParam;
						console.log("新跳转的地址：" + newUrl);

						$('#myIframe').attr("src", newUrl);
						loading = weui.loading('正在查询数据...', {
							className: 'custom-classname'
						});
						showCondition(false);
					});

					//取消查询按钮事件
					$(document).on('click', '.btn-cancel button', function() {
						showCondition(false);
					});

					//弹窗时候不允许背景滚动
					$('.condition,.pop-mask').bind("touchmove", function(e) {
						e.preventDefault();
					});

					//打开页面先请求动态条件
					Y.API2("WxConditionConfig", "GetWxReportConfig", { "reportId": reportId }, function(data) {
						if(data.Success == false) {
							console.log("WxConditionConfig 动态条件获取失败", data.Message);
						} else {
							//console.log("动态条件数据源：", data);
							//拿到数据源之后，先构造筛选条件
							for(var i = 0; i < data.length; i++) {
								var item = data[i];
								var desc = item.config_textdescription; //文本描述
								var source = item.config_source; //数据源
								var configValue = item.config_value || ''; //默认值
								var controlId = item.config_controlid; //控件id
								var cascade = item.config_cascade || ''; //级联关系
								var controltype = item.config_controltype; //控件类型：time,dropdown,text,radio,checkbox,
								var lineHtml = ''; //每一个设置单独放一行html
								if(controltype === 'text') {
									//文本框类型的：①没有图标；②禁止下拉；③可以编辑
									lineHtml = '\
						        <div class="oneLinePart">\
						            <label for="' + controlId + '"  data-configSource="' + source + '"  class="leftTipLabel">' + desc + ':</label>\
						            <input data-id="' + controlId + '" id="' + controlId + '" value="' + configValue + '" class="oneline-input common-input" />\
						        </div>';
								} else if(controltype === 'radio') {
									//单选框类型：①数据源决定选项个数，②必然要有默认值
									var radioDataArr = source.split(';');
									var radioListHtml = "";
									for(let j = 0; j < radioDataArr.length; j++) {
										var radioValue = radioDataArr[j];
										var radioCheckedStr = configValue === radioValue ? 'checked' : '';
										radioListHtml += '<input type="radio" name="' + controlId + '" value="' + radioValue + '" title="' + radioValue + '" ' + radioCheckedStr + ' />';
									}

									lineHtml = '\
								<div class="line">\
									<div class="oneLinePart">\
										<div class="layui-form" action="">\
											<label class="leftTipLabel layui-my-label">' + desc + ':</label>\
											<div class="layui-my-radio">' +
										radioListHtml +
										'</div>\
										</div>\
									</div>\
								</div>';
								} else if(controltype === 'checkbox') {
									//复选框类型：①数据源决定选项个数，②不一定有默认值
									var checkboxDataArr = source.split(';');
									var checkboxListHtml = "";
									for(let j = 0; j < checkboxDataArr.length; j++) {
										var checkboxValue = checkboxDataArr[j];
										var checkedStr = configValue === checkboxValue ? 'checked' : '';
										checkboxListHtml += '<input type="checkbox" lay-skin="primary"  name="' + controlId + '" value="' + checkboxValue + '" title="' + checkboxValue + '" ' + checkedStr + ' />';
									}

									lineHtml = '\
								<div class="line">\
									<div class="oneLinePart">\
										<div class="layui-form" action="">\
											<label class="leftTipLabel layui-my-label">' + desc + ':</label>\
											<div class="layui-my-radio">' +
										checkboxListHtml +
										'</div>\
										</div>\
									</div>\
								</div>';
								} else if(controltype === 'time') {
									//时间类型的：①有图标，②绑定下拉样式，③input只读
									var addDay = parseInt(configValue);
									var dataValue = getDateTime(addDay);

									lineHtml = '\
						        <div class="oneLinePart">\
						            <label for="' + controlId + '"  data-configSource="' + source + '"  class="leftTipLabel">' + desc + ':</label>\
						            <input data-value="' + dataValue + '" data-cascade="' + cascade + '" data-id="' + controlId + '" id="' + controlId + '" readonly="readonly" onfocus="this.blur();" value="' + dataValue + '" class="oneline-input common-input input_' + controltype + '" />\
									<img id="input-icon_' + controlId + '" class="input-icon input-icon_' + controltype + '" data-id="' + controlId + '" src="' + getIconName(controltype) + '" />\
						        </div>';
								} else {
									//下拉框类型的：①有图标，②绑定下拉样式，③input只读
									lineHtml = '\
						        <div class="oneLinePart">\
						            <label for="' + controlId + '"  data-configSource="' + source + '"  class="leftTipLabel">' + desc + ':</label>\
						            <input data-defaultvalue="'+configValue+'"  data-cascade="' + cascade + '" data-id="' + controlId + '" id="' + controlId + '" readonly="readonly" onfocus="this.blur();" value="" class="oneline-input common-input input_' + controltype + '" />\
									<img id="input-icon_' + controlId + '" class="input-icon input-icon_' + controltype + '" data-id="' + controlId + '" src="' + getIconName(controltype) + '" />\
						        </div>';
								}
								//把拼接的HTML放进行里，然后添加到界面上的条件栏
								var lineDiv = $('<div class="line"></div>');
								$(lineDiv).append($(lineHtml));
								$('.condition').append($(lineDiv));

							}
							//添加查询按钮
							var btn = '\
						<div class="line">\
							<div class="btn-cancel"><button onfocus="this.blur();">取消</button></div>\
							<div class="btn-submit"><button onfocus="this.blur();">查询</button></div>\
						</div>';
							$('.condition').append($(btn));

							//做一些数据初始化
							paramList = []; //把ID和参数名字存起来，传参的时候直接遍历这个列表（用id取值，用参数名拼凑url）
							cascadeList = []; //级联关系会决定下拉框的联动
							for(let j = 0; j < data.length; j++) {
								var tData = data[j];

								//全部参数都存起来，没有例外
								paramList.push({
									name: tData.config_paramname,
									id: tData.config_controlid,
									type: tData.config_controltype
								});

								//级联关系不为空的，就存起来
								if(tData.config_cascade != null) {
									cascadeList.push({
										id: tData.config_controlid,
										targetId: tData.config_cascade,
										source: tData.config_source
									});
								}

								//下拉类型的，把数据源存起来，用控件id当key
								if(tData.config_controltype === 'dropdown') {
									Y.API2("WxDataSource", tData.config_source, {UserID: userId}, function(res) {
										tData = data[j];
										if(res.Success === false) {
											console.log("WxDataSource " + tData.config_source + "失败", res.Message);
										} else {
											//console.log("初始化" + tData.config_controlid + "下拉数据源：" + res.length + "条");
											setDataSourceListById(tData.config_controlid, res);
											//有数据源了，可以设置默认值了
											var tmpValue=tData.config_value||'';
											if(tmpValue!==''){
												//console.log('有数据源了，可以设置默认值了：'+tData.config_controlid+'|'+tData.config_value);
												for (var k=0;k<res.length;k++) {
													if(res[k].Name===tData.config_value){
														//console.log(res[k]);
														var tmpInput=$('#'+tData.config_controlid);
														$(tmpInput).val(res[k].Name); //显示给前台
														$(tmpInput).attr("data-value", res[k].ID); //实际要用的参数值
													}
												}
											}
										}
									});
								}
							}
							//渲染form
							form.render();

						}
					});

					var fullHeight = $('.main').outerHeight();
					var usedHeight = $('.titlebar').outerHeight();
					$('.iframe').css('height', fullHeight - usedHeight);
					$('#myIframe').attr("src", realUrl);

				});


				var iframe = document.getElementById("myIframe");
				//给微信用的，不用考虑IE兼容，直接用onload
 				iframe.onload = function(){
					var url=$('#myIframe').attr('src')||'';
					if(url != ''){
						hideLoading();
						console.log('iframe加载完毕');
					}else{
						console.log('iframe初始化完毕');
					}
			    };
			});
		</script>

	</body>

</html>